package cn.edu.wynu.d14_extends_constructor;
/*
补充知识:this(...)调用兄弟构造器
任意类的构造器中，都可以通过this(...)去调用该类的其他构造器。

this(...)和super(...)使用时的注意事项:
this(..)、super(..)都只能放在构造器的第一行，因此，有了this(..)就不能写super(...)了，反之亦然。
*/
public class Test3 {
    public static void main(String[] args) {
        // 掌握在类的构造器中，通过this(...)调用兄弟构造器的作用
        Student s1 = new Student("张三", 18, "清华大学");

        // 需求：如果学生没有填写学校，那么学校默认为"未知"
        Student s2 = new Student("李四", 19);
        System.out.println(s2.getName());
        System.out.println(s2.getAge());
        System.out.println(s2.getSchoolName());
    }
}

class Student{
    private String name;
    private int age;
    private String schoolName;

    public Student() {
    }

    // 任意类的构造器中，都可以通过this(..)去调用该类的其他构造器
    public Student(String name, int age) {
//        this.name = name;
//        this.age = age;
//        this.schoolName = "未知";
        this(name, age, "未知");

        // this(...)是要占{}内的第一行，super也是同理
        // this(...)和super(...)不能同时出现在同一个构造器内，否则会报错
    }

    public Student(String name, int age, String schoolName) {
        this.name = name;
        this.age = age;
        this.schoolName = schoolName;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSchoolName() {
        return schoolName;
    }

    public void setSchoolName(String schoolName) {
        this.schoolName = schoolName;
    }
}
